#include "head.h"
#include "factory.h"

int main(int argc,char *argv[])
{
    if(argc!=4)
    {
        printf("./thread_pool IP PORT THREAD_NUM\n");
        return -1;
    }
    //atoi将字符串转换为整数
    int thread_Num=atoi(argv[3]);//线程数量
    factory_t f;//主数据结构、线程池工厂
    factoryInit(&f,thread_Num);
    factoryStart(&f);//启动线程

    int sock_fd,new_fd;    
    tcp_init(argv[1],argv[2],&sock_fd);//网络初始化

    struct sockaddr_in clientAddr;
    socklen_t addrLen;

    while (1)
    {
        addrLen=sizeof(clientAddr);
        new_fd=accept(sock_fd,(struct sockaddr *)&clientAddr,&addrLen);
        ERROR_CHECK(new_fd,-1,"accept");
        //任务入队
        taskEnQueue(&f.taskQueue,new_fd);
        //唤醒一个子线程
        pthread_cond_signal(&f.cond);
    }
    return 0;
}